<!-- 视图复选框 -->

<template>
  <div :class="className" @mouseenter="mouseEnter" @mouseleave="mouseLeave">
    <el-checkbox :value="map_param.checkboxList.includes(dict[0])" @change="toChange">
      <span :title="dict[1]">{{ dict[1] }}</span>
      <span>{{ dict[2] }}</span>
    </el-checkbox>
  </div>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import props from './props'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'CheckboxItem',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb('map', 'map_')],

  /**
   * 属性注册 (抽取以便查阅)
   */
  props,

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 样式类名称
     */
    className() {
      const { map_MAP: { hoverType }, dict } = this
      return hoverType === dict[0] ? 'Secure-MapView-checkbox-hover' : null
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 方法
     */
    toChange(value) {
      const { map_param: { checkboxList }, dict } = this

      if (value) {
        checkboxList.push(dict[0])
      } else {
        const index = checkboxList.findIndex((code) => dict[0] === code)
        index >= 0 && checkboxList.splice(index, 1)
      }
    },

    /**
     * 鼠标进入
     */
    mouseEnter() {
      this.map_MAP.hoverType = this.dict[0]
    },

    /**
     * 鼠标离开
     */
    mouseLeave() {
      this.map_MAP.hoverType = ''
    },
  },
}
</script>
